package com.terry.test3;

import java.util.Scanner;

/**
 * 学生方阵
 *
 * 学校组织活动，将学生排成一个矩形方阵。请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上，方向可以是水平的、垂直的、呈对角线的或者反对角线的。
 * 注：学生个数不会超过10000.
 *
 * 输入描述:
 * 输入的第一行为矩阵的行数和列数，接下来的n行为矩阵元素，元素间用“,”分隔。
 * 输出描述:
 * 输出一个整数，表示矩阵中最长的位置相连的男生个数。
 * 示例1
 *
 * 输入
 * 3,4
 * F,M,M,F
 * F,M,M,F
 * F,F,F,M
 * 输出
 * 3
 *
 * @author 小八
 * @date 2023年02月13日13:39
 */
public class Title31 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String[] split = in.nextLine().split(",");
        //X
        int X  = Integer.parseInt(split[0]);
        //Y
        int Y = Integer.parseInt(split[1]);
        String[][] arr = new String[X][Y];
        for (int i = 0; i < X; i++) {
            String[] tempSplit = in.nextLine().split(",");
            for (int j = 0; j < Y; j++) {
                arr[i][j] = tempSplit[j];
            }
        }
        int maxLen = 0;
        for (int i = 0; i < X; i++) {
            for (int j = 0; j < Y; j++) {
                maxLen = Math.max(maxLen,dfs(arr,i,j,0,0));
                maxLen = Math.max(maxLen,dfs(arr,i,j,1,0));
                maxLen = Math.max(maxLen,dfs(arr,i,j,2,0));
                maxLen = Math.max(maxLen,dfs(arr,i,j,3,0));
            }
        }
        System.out.println(maxLen);
    }

    //
    public static int dfs(String [][] arr,int x,int y,int direct,int count){
       if("F".equals(arr[x][y])){
           count++;
           switch (direct){
               case 0: //下
                   if(x+1<arr.length){
                       return dfs(arr,x+1,y,direct,count);
                   }
                   break;
               case 1: //右
                   if(y+1<arr[0].length){
                       return dfs(arr,x,y+1,direct,count);
                   }
                   break;
               case 2: //左斜
                   if(x+1<arr.length && y+1<arr[0].length){
                       return dfs(arr,x+1,y+1,direct,count);
                   }
                   break;
               case 3: //反斜
                   if(x+1<arr.length && y-1>=0){
                       return dfs(arr,x+1,y-1,direct,count);
                   }
                   break;
           }
           return count;
       }else{
           return count;
       }
    }
}
